package com.icoolkj.ms.api.upload.feign;

import com.icoolkj.ms.api.upload.vo.FileInfoVO;
import com.icoolkj.ms.common.core.constant.ServiceNameConstants;
import com.icoolkj.ms.common.core.response.ServerResponseEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 文件服务 Feign 客户端接口
 * 
 * @author icoolkj
 */
@FeignClient(value = ServiceNameConstants.UPLOAD_SERVICE, contextId = "fileServiceFeignClient")
public interface FileServiceFeignClient {

    /**
     * 获取文件信息
     *
     * @param fileId 文件ID
     * @return 文件信息
     */
    @GetMapping("/file/{fileId}")
    ServerResponseEntity<FileInfoVO> getFileInfo(@PathVariable("fileId") Long fileId);

    /**
     * 根据业务类型和业务ID获取文件列表
     *
     * @param businessType 业务类型
     * @param businessId   业务ID
     * @return 文件信息列表
     */
    @GetMapping("/file/list")
    ServerResponseEntity<List<FileInfoVO>> getFilesByBusiness(
            @RequestParam("businessType") String businessType,
            @RequestParam("businessId") String businessId);

    /**
     * 删除文件
     *
     * @param fileId 文件ID
     * @return 是否成功
     */
    @DeleteMapping("/file/{fileId}")
    ServerResponseEntity<Boolean> deleteFile(@PathVariable("fileId") Long fileId);

    /**
     * 批量删除文件
     *
     * @param fileIds 文件ID数组
     * @return 是否成功
     */
    @DeleteMapping("/file/batch")
    ServerResponseEntity<Boolean> deleteFiles(@RequestBody Long[] fileIds);
} 